package org.lanqiao.tjut.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.lanqiao.tjut.bean.StudentBean;
import org.lanqiao.tjut.dao.IStudentBeanDao;
import org.lanqiao.tjut.service.IStudentInfoService;
import org.springframework.stereotype.Service;

/**
 * Model层：进行业务逻辑处理
 * 
 * @author Administrator
 *
 */
@Service("stuS")
public class StudentInfoService implements IStudentInfoService {
	/*
	 * 使用注解@Resource层，依赖注入该属性的值，依赖于与变量名同名的一个注解对象
	 * 注意：该变量的声明使用接口，该变量通过依赖关系注入的对象值是该接口的一个具体的实现类的实例对象， 此处使用了面向接口的编程思想
	 */
	@Resource
	private IStudentBeanDao stuD;

	/**
	 * 通过参数条件获取学生信息
	 * 
	 * @param stuB
	 *            参数条件实体对象
	 * @return 获取的学生信息实体集合
	 */
	public List<StudentBean> queryStudentInfoByParams(StudentBean stuB) {
		List<StudentBean> lstStus = null;
		// 调用dao层的mybatis进行数据查询操作
		lstStus = stuD.selectSutdentInfoByParams(stuB);
		return lstStus;
	}

	/**
	 * 通过学生主键获取学生信息
	 * 
	 * @param sid
	 *            学生主键
	 * @return 学生信息
	 */
	public StudentBean selectByPrimaryKey(Long sid) {
		// 调用dao层的mybatis进行数据查询操作
		StudentBean stuB = stuD.selectByPrimaryKey(sid);
		return stuB;
	}

	/**
	 * 新增学生信息
	 * 
	 * @return 新增操作结果
	 */
	public int saveOrUpdateStudentInfo(StudentBean stuB) {
		// 默认返回值
		int re_i = 0;
		// 根据主键字段是否为null来确定，数据库操作是新增还是修改
		if (stuB != null && stuB.getStuId() == null) {
			// 新增操作
			re_i = stuD.insertSelective(stuB);
		} else {
			// 修改操作
			re_i = stuD.updateByPrimaryKeySelective(stuB);
		}
		return re_i;
	}
	
	/**
	 * 根据Id主键参数（逻辑）删除学生信息
	 * 
	 * @param stuId
	 *            主键
	 * @return 删除操作结果
	 */
	public int deleteStudentInfoById(Long stuId) {
		int re_i = 0;
		// 删除操作sql
		/*
		 * 逻辑删除：使用update修改标志位字段即可；
		 * 物理删除：使用delete语句进行删除操作即可；
		 * 注意：两种删除操作都要条件where，否则删除整张表的数据
		 */
		// 调用dao层的mybatis进行数据逻辑删除(修改)操作
		// 创建一个student实体对象
		StudentBean stuM = new StudentBean();
		// 修改逻辑删除字段的标识位
		stuM.setIsdeleted((short) 1);
		// 设置主键值
		stuM.setStuId(stuId);
		// 进行数据修改
		re_i = stuD.updateByPrimaryKeySelective(stuM);
		return re_i;
	}
}
